package com.wtsw.pulsosocial.model.util;

import android.annotation.SuppressLint;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;

public class Tiempo {
	private Date hora_inicio;
	private Date hora_fin;
	private long duracion;
	
	public enum Estado_Tiempo_Evento {
	    NO_INICIADO,
	    DESARROLLO,
	    ACABO
	}
	
	public Tiempo(Date hora_inicio, Date hora_fin) {
		this.hora_fin = hora_fin;
		this.hora_inicio = hora_inicio;
		establecerDuracion();
	}
	
	private void establecerDuracion() {
		// TODO Auto-generated method stub
		this.duracion=hora_fin.getTime()-hora_inicio.getTime();		 
	}

	public String diferenciaHoras() {
		return String.valueOf(TimeUnit.MILLISECONDS.toHours(duracion));
	}

	public String diferenciaMinutos() {
		// TODO Auto-generated method stub
		return String.valueOf(TimeUnit.MILLISECONDS.toHours(duracion)*60-TimeUnit.MILLISECONDS.toMinutes(duracion));
	}
	
	public String duracion() {
		long horas = TimeUnit.MILLISECONDS.toHours(duracion);
		long minutos = TimeUnit.MILLISECONDS.toMinutes(duracion)-horas*60;
		String respuesta = String.valueOf(horas);
		if (horas > 1) {
			respuesta = respuesta+"horas";
			if (minutos>1) {
				respuesta = respuesta+" y "+minutos+" minutos";
			}else
			{
				if (minutos==1) {
					respuesta = respuesta+" y "+minutos+" minuto";
				}
			}
		}	else {
			if (horas == 1) {
					respuesta = respuesta+"hora";
					if (minutos>1) {
						respuesta = respuesta+" y "+minutos+" minutos";
					}else
					{
						if (minutos==1) {
							respuesta = respuesta+" y "+minutos+" minuto";
						}
					}
			} else
			{
				if (horas<1) {					
					if (minutos>1) {
						respuesta = minutos+" minutos";
					}else
					{
						if (minutos==1) {
							respuesta = minutos+" minuto";
						}
					}
				}
			}
		}		
			return respuesta;
	}
	
	public Estado_Tiempo_Evento event_state(){
		Date now = new Date(System.currentTimeMillis());
		Estado_Tiempo_Evento estado = null;
		if (now.getTime()<hora_inicio.getTime()) {
			estado = Estado_Tiempo_Evento.NO_INICIADO;
		}
		if (now.getTime()>hora_inicio.getTime() && now.getTime()<hora_fin.getTime()) {
			estado = Estado_Tiempo_Evento.DESARROLLO;
		}
		if (now.getTime()>hora_fin.getTime()) {
			estado = Estado_Tiempo_Evento.ACABO;
		}		
		return estado;
	}
	
	public long tiempo_pasado() {
		Date now = new Date(System.currentTimeMillis());
		//return now.getTime()-hora_inicio.getTime();
		return TimeUnit.MILLISECONDS.toMillis(now.getTime()-hora_inicio.getTime());
		//return TimeUnit.MILLISECONDS.toMillis(hora_fin.getTime()-now.getTime());		
	}

	@SuppressLint("SimpleDateFormat")
	public String get_hora_inicial() {
		// TODO Auto-generated method stub
		Format formatter = new SimpleDateFormat("hh:mm a");
		return formatter.format(hora_inicio);		
	}
	
	public String tiempo_pasado_string() {
		Date now = new Date(System.currentTimeMillis());
		long horas = TimeUnit.MILLISECONDS.toHours(duracion);
		Format formatter;
		if (horas>0) {
			 formatter = new SimpleDateFormat("hh:mm:ss");
		} else {
			 formatter = new SimpleDateFormat("mm:ss");
		}		
		return formatter.format(new Date(TimeUnit.MILLISECONDS.toMillis(now.getTime()-hora_inicio.getTime())));	
	}
}
